/**
 * 文件名：@ThreadInternalHolder.java <br/>
 * 包名：cn.efunbox.afw.core.holder <br/>
 * 项目名：afw-core <br/>
 * @author xtwin <br/>
 */
package cn.efunbox.afw.core.holder;

/**
 * 类名：ThreadInternalHolder  <br />
 *
 * 功能：线程内容的持有者实现，基于ThreadLocal，使用该实现，需要在适当的时候执行clear操作，尤其需要注意线程池带来的影响
 *
 * @author xtwin <br />
 * 创建时间：2016年7月31日 下午2:14:30  <br />
 * @version 2016年7月31日
 */
public class ThreadInternalHolder<T> implements Holder<T> {
	
	// 数据容器
	private ThreadLocal<T> container = new ThreadLocal<>();

	/**
	 * 功能: <br/>
	 * 
	 * 重写：xtwin <br/>
	 * 
	 * @version ：2016年7月31日 下午2:14:46<br/>
	 * 
	 * @return <br/>
	 * @see cn.efunbox.afw.core.holder.Holder#get()
	 */
	@Override
	public T get() {
		return container.get();
	}

	/**
	 * 功能: <br/>
	 * 
	 * 重写：xtwin <br/>
	 * 
	 * @version ：2016年7月31日 下午2:14:46<br/>
	 * 
	 * @param value <br/>
	 * @see cn.efunbox.afw.core.holder.Holder#set(java.lang.Object)
	 */
	@Override
	public void set(T value) {
		container.set(value);
	}

	/**
	 * 功能: <br/>
	 * 
	 * 重写：xtwin <br/>
	 * 
	 * @version ：2016年7月31日 下午2:14:46<br/>
	 *  <br/>
	 * @see cn.efunbox.afw.core.holder.Holder#clear()
	 */
	@Override
	public void clear() {
		container.remove();
	}

}
